草庐IT

Java Process Servers 好主意与否?

全部标签

c++ - 学习 C++ 标准库——一个好主意?

我是C++的初级程序员,我还在学习基础,但我有一个关于C++中的标准库和STL的简单问题,我认为这不是来自语言的核心,我的意思是这个库只是使编程和可移植性更容易,这意味着如果我学习并掌握了C++规则,我可以构建自己的规则,我的意思是通常通过练习获得这种调用体验。示例:cout是标准输出函数,但是如果我想为Windows编写一个GUI软件,我永远不会只看它!!我的问题:这是真的吗?如果不是,为什么? 最佳答案 如果不熟悉标准库,就不能真正称得上是C++程序员。自己编写是一个非常糟糕的主意。我强烈建议您获取NicolaiJosuttis

c++ - 模板编译错误 - 标准与否?

我有以下代码:templatevoidfoo(){}intmain(intargc,char*argv[]){intk=1000;foo();return0;}它不编译,但如果我将k声明为const,它会:templatevoidfoo(){}intmain(intargc,char*argv[]){constintk=1000;foo();return0;}现在,我明白了为什么在第一种情况下它不编译而在第二种情况下它编译的背后的逻辑,但这是由标准指定的吗?我得到的错误是:Error1errorC2971:'foo':templateparameter'k':'k':alocalvar

c++ - 将大 vector 存储在堆栈中是个坏主意吗?

我一直在研究一堆图像处理程序..没什么特别的,主要是快速而肮脏的实验。图像数据存储在堆栈上声明的vector中(当我不需要传递数据时,我尽量避免使用指针)。我注意到尽管进行了无数次调试和单步执行,但我的某些函数的行为一直很奇怪。有时调试器会给我一个错误,它无法评估某个变量等等。事情通常是没有意义的,过去的经验告诉我,当这种情况发生时,这意味着发生了某种溢出或内存损坏。第一个想到的是,这可能是因为我将大量图像数据存储到vector中。但是,我的印象是vector将它们的实际数据存储在堆中,因此我认为在堆栈中放置一些这样的大vector不会有什么坏处。我这样想错了吗?我应该分配我的vect

c++ - 在编译代码中包含一个大文本变量是个好主意吗?

我正在编写一个为用户生成格式化文件的程序,但它不仅生成格式化文件,它还做了更多。我想向最终用户分发一个二进制文件,当用户运行该程序时,它会为用户生成具有适当数据的xml文件。为了实现这一点,我想将文件内容提供给一个用代码编译的char数组变量。当用户运行程序时,我会把char文件写出来,为用户生成一个xml文件。char*buffers="axmlformatfilecontents,\thisrepresentmanyblocktext\fromafile,...";我有两个问题。Q1。对于如何将我的文件内容编译成二进制文件,即作为一个二进制文件分发,您有任何其他想法吗?Q2。如上所

c++ - 什么时候通过引用传递不是一个好主意?

这是一个我从未真正理解过的内存分配问题。voidunleashMonkeyFish(){MonkeyFish*monkey_fish=newMonkeyFish();std::stringlocalname="Wanda";monkey_fish->setName(localname);monkey_fish->go();}在上面的代码中,我在堆上创建了一个MonkeyFish对象,为其分配了一个名称,然后将其释放到世界上。假设已分配内存的所有权已转移到MonkeyFish对象本身-只有MonkeyFish本身会决定何时死亡和删除自己。现在,当我在MonkeyFish类中定义“name

c++ - 基于枚举的模板是个好主意吗?

我正在编写一个唯一ID生成器,它具有不同的策略来生成在一天、一周或一个月内唯一的ID。我不想创建具有虚函数机制的类层次结构像下面的代码片段那样做是个好主意吗?有什么建议吗?enumDuration{Day,Week,Month};templateclassIDGenerator{generateId();} 最佳答案 是的,它可以接受并且仅文件如果编译时多态性对您来说足够了-您将节省虚拟调用,这将允许更好的编译器优化。 关于c++-基于枚举的模板是个好主意吗?,我们在StackOverf

c++ - 为指向集合的指针重载开始/结束是个好主意吗

我很喜欢免费的新概念beginend编写更通用的算法和数据结构。目前,我有时会遇到必须区分调用begin(range)的情况。和begin(*range)当一个类型持有对集合的引用作为指针时。我考虑过是否始终为我自己的集合类型的指针提供重载的开始/结束是个好主意。structContainer{intvalues[3];};constint*begin(constContainer&c);constint*end(constContainer&c);constint*begin(constContainer*c);constint*end(constContainer*c);templ

c++ - 创建一个不可复制的 STL 迭代器是个好主意吗?

大多数时候,STL迭代器是可复制构造的,因为一些STL算法需要这样做来提高性能,例如std::sort。但是,我一直在从事一个包装FindXFileAPI(previouslyaskedabout)的宠物项目,但问题是不可能围绕此API实现可复制的迭代器。不能以任何方式复制查找句柄——DuplicateHandle特别禁止将这些类型的句柄传递给它。如果您只是维护查找句柄的引用计数,那么任何拷贝的单个增量都会导致所有拷贝的增量——显然这不是拷贝构造的迭代器应该做的。既然我不能在这里满足迭代器的传统复制构造要求,是否值得尝试创建一个“STL风格”的迭代器?一方面,创建一些其他枚举方法不会落

c++ - 什么时候虚拟继承是个好主意?

我正在制作一个游戏GUIAPI,其中每个小部件都继承自Widget类。我在想,当其他人在那里制作自己的小部件时,他们可能对基类不完全满意。例如,他们可能想添加getTheme()。让我所有的小部件都从Widget虚拟继承是不是一个好主意,以便这成为可能?谢谢 最佳答案 仅仅因为用户将自己的方法添加到子类并不意味着您需要使用虚拟继承。如果在您的库中,您有一个具有多个子类的基类,并且人们可以一次从多个子类继承(例如混合而不是替换),您将使用它。 关于c++-什么时候虚拟继承是个好主意?,我们

c++ - 通过公共(public) const 指针进行封装是个好主意吗?

这是我所知道的:明智的做法是不要直接在您的API中公开您的ivar;相反,使用访问器指向非const对象的const指针仅意味着您可以更改对象,但不能重定向指针指向的位置这是我的情况:我有一些相关的类(class)。我想创建一个简单的类,通过组合,将这些组合成一个逻辑接口(interface)。我的每个封闭类在其API中已经具有公共(public)和私有(private)区别,因此我不介意将它们直接暴露给父类的用户。这意味着为这些ivar编写访问器对我来说太过分了,因为这些类已经管理了哪些是公共(public)的,哪些不是。但是,我不希望用户更改包含在这个组合父类中的实际对象。所以我能